New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@perfective/fp

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@perfective/fp

Functions and types for functional programming

  • 0.4.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
4
Maintainers
1
Weekly downloads
 
Created
Source

Perfective Functional Programming

The @perfective/fp package provides types and functions for the functional programming style as well as logical types and functions (predicates and propositions). As functions with more than three arguments are considered a code smell, this package only declares the Nullary, Unary, Binary, and Ternary types. The functions of higher arity is unlikely to be added to the package.

Read the full documentation in the repository.

Type Guards

  • TypeGuard<T, V extends T> = (value: T) => value is V — a function type to check if the value is of a certain type:
    • isFunction<T>(value: Function | T): value is Function
    • isNotFunction<T>(value: Function | T): value is T
  • Type<T> = new(...args: any[]) => T — definition for a type reference:
    • isInstanceOf<T, V = unknown>(type: Type<T>): (value: T | V) => value is T
    • isNotInstanceOf<T, V = unknown>(type: Type<T>): (value: T | V) => value is T

Nullary functions

  • Nullary<T> — a function without arguments:
    • constant<T>(value: T): Nullary<T> — creates a function that returns that same value.
    • empty(): Nullary<void> — creates a function that always returns void (undefined).
  • Value<T> = T | Nullary<T> — represent a value, or a function that returns a value (e.g. for lazy evaluation).
    • valueOf<T>(value: Value<T>): T — evaluates the given value.

Unary functions

  • Unary<X, V> — a function with one argument:
    • value<T>(): Unary<T, T> — creates a function that returns its argument.

Binary functions

  • Binary<X, Y, V> — a function with two arguments (X and Y).

Ternary functions

  • Ternary<X, Y, Z, V> — a function with three arguments (X, Y, and Z).

Logic types and functions

  • Proposition = Value<boolean>:
    • isTrue(proposition: Proposition): boolean
    • isFalse(proposition: Proposition): boolean
    • always(): boolean — a function that returns true.
    • never(): boolean — a function that returns `false.
  • Predicate<T> = (value: T) => boolean — a predicate on type T:
    • is<T>(input: T): Predicate<T> — creates a predicate that is true when its argument is the same as the input.
    • isNot<T>(input: T): Predicate<T> — creates a predicate that is true when its argument is not the same as the input.
    • not<T>(predicate: Predicate<T>): Predicate<T> — creates a predicate that negates the given predicate.
    • all<T>(...predicates: Predicate<T>[]): Predicate<T> — creates a predicate that is true when all predicates are true (logical AND).
    • either<T>(...predicates: Predicate<T>[]): Predicate<T> — creates a predicate that is true when at least one predicate is true (logical OR).
    • neither<T>(...predicates: Predicate<T>[]): Predicate<T> — creates a predicate that is true when none of the predicates is true.
    • atLeast<T>(minimum: number, ...predicates: Predicate<T>[]): Predicate<T> — creates a predicate that is true when at least the minimum number of predicates are true.
    • atMost<T>(maximum: number, ...predicates: Predicate<T>[]): Predicate<T> — creates a predicate that is true when at most the maximum number of predicates are true.
    • exactly<T>(count: number, ...predicates: Predicate<T>[]): Predicate<T> — creates a predicate that is true when exact count of predicates are true.

Keywords

FAQs

Package last updated on 31 Jul 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc